<?php

/*
 * Object/Semaine.php
 */

namespace RHX\Model\Object;

/**
 * Classe Semaine : Représentation d'une semaine
 */
class Semaine {

    public $id;
    public $libelle;
    public $lundi;
    public $mardi;
    public $mercredi;
    public $jeudi;
    public $vendredi;
    public $samedi;
    public $dimanche;

    /**
     * Constructeur
     * 
     * @param array $data
     */
    public function __construct($data = array()) {
	$this->exchangeArray($data);
    }

    /**
     * Remplissage des données
     *
     * @param array $data
     */
    public function exchangeArray($data) {
	$this->id	 = isset($data['id']) ? $data['id'] : null;
	$this->libelle		 = isset($data['libelle']) ? $data['libelle'] : 'Semaine';
	$this->lundi		 = isset($data['lundi']) ? $data['lundi'] : '0000-00-00';
	$this->mardi		 = isset($data['mardi']) ? $data['mardi'] : '0000-00-00';
	$this->mercredi		 = isset($data['mercredi']) ? $data['mercredi'] : '0000-00-00';
	$this->jeudi		 = isset($data['jeudi']) ? $data['jeudi'] : '0000-00-00';
	$this->vendredi		 = isset($data['vendredi']) ? $data['vendredi'] : '0000-00-00';
	$this->samedi		 = isset($data['samedi']) ? $data['samedi'] : '0000-00-00';
	$this->dimanche		 = isset($data['dimanche']) ? $data['dimanche'] : '0000-00-00';
    }

    /**
     * Copie tableau des propriétés
     * 
     * @return array
     */
    public function getArrayCopy() {
	return get_object_vars($this);
    }

    /**
     * Vérifie si une date appartient à la semaine
     * 
     * @param \RHX\Helper\RHDateTime $date
     * @return boolean
     */
    public function isOneOfDate($date) {
	$date		 = new \RHX\Helper\RHDateTime($date);
	$dateFormat	 = $date->date('Y-m-d');
	if ($dateFormat == $this->lundi || $dateFormat == $this->mardi || $dateFormat == $this->mercredi || $dateFormat == $this->jeudi || $dateFormat == $this->vendredi || $dateFormat == $this->samedi || $dateFormat == $this->dimanche) {
	    return true;
	}

	return false;
    }

    /**
     * Vérifie si une date appartient à la semaine
     * 
     * @param string $date
     * @return boolean
     */
    public function isIn($date) {
	return $this->isOneOfDate($date);
    }

}
?>

